<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="resources/currentSrcHelper.js"></script>
<script>

    addEventListener("load", function() {
        test(function() {
            assert_equals(document.getElementById("simple").currentSrc.indexOf("file://"), 0);
            assert_equals(document.getElementById("simple").clientWidth, (window.innerWidth));
            assert_equals(currentSrcFileNameNoParams("simple"), "image-set-2x.png");
            assert_equals(document.getElementById("small_sizes").clientWidth, 300);
            assert_equals(currentSrcFileNameNoParams("small_sizes"), "image-set-1x.png");
            assert_equals(document.getElementById("sizes_x_descriptors").clientWidth, 400);
            assert_equals(currentSrcFileNameNoParams("sizes_x_descriptors"), "image-set-1x.png");
            assert_equals(document.getElementById("sizes_src").clientWidth, 400);
            assert_equals(currentSrcFileNameNoParams("sizes_src"), "image-set-1x.png");
            assert_equals(document.getElementById("default_sizes").clientWidth, window.innerWidth);
            assert_equals(currentSrcFileNameNoParams("default_sizes"), "image-set-2x.png");
            assert_equals(document.getElementById("invalid_length").clientWidth, window.innerWidth);
            assert_equals(currentSrcFileNameNoParams("invalid_length"), "image-set-2x.png");
            assert_approx_equals(document.getElementById("src_and_w").clientWidth, 700, 1/64);
            assert_equals(currentSrcFileNameNoParams("src_and_w"), "image-set-4x.png");
            assert_approx_equals(document.getElementById("src_and_w2").clientWidth, 700, 1/64);
            assert_equals(currentSrcFileNameNoParams("src_and_w2"), "image-set-1x.png");
            assert_approx_equals(document.getElementById("x_and_w").clientWidth, 700, 1/64);
            assert_equals(currentSrcFileNameNoParams("x_and_w"), "image-set-4x.png");
            assert_equals(document.getElementById("x_and_w2").clientWidth, 400);
            assert_equals(currentSrcFileNameNoParams("x_and_w2"), "image-set-2x.png");
            assert_equals(document.getElementById("x_and_w3").clientWidth, 400);
            assert_equals(currentSrcFileNameNoParams("x_and_w3"), "image-set-2x.png");
            assert_equals(document.getElementById("half_size").clientWidth, (window.innerWidth/2));
            assert_equals(currentSrcFileNameNoParams("half_size"), "image-set-2x.png");
            assert_equals(document.getElementById("infitisimal_sizes").clientWidth, (window.innerWidth/100));
            assert_equals(currentSrcFileNameNoParams("infitisimal_sizes"), "image-set-2x.png");
            assert_equals(currentSrcFileNameNoParams("fraction"), "data:,a");
            assert_equals(document.getElementById("seen_lowest_before").clientWidth, 1600);
            assert_equals(currentSrcFileNameNoParams("seen_lowest_before"), "image-set-4x.png");
            assert_equals(document.getElementById("seen_highest_before").clientWidth, 800);
            assert_equals(currentSrcFileNameNoParams("seen_highest_before"), "image-set-4x.png");
        }, "Test srcset and sizes at a 1x screen");
    }, false);
</script>
<img id="simple" src="" sizes="(max-width: 300px) 400px, 800px" srcset="../../hidpi/resources/image-set-1x.png?1 400w, ../../hidpi/resources/image-set-2x.png?1 800w">
<img id="small_sizes" src="" sizes="300px" srcset="../../hidpi/resources/image-set-1x.png?2 400w, ../../hidpi/resources/image-set-2x.png?2 800w">
<!-- 'sizes' has no impact on 'x' or 'src' resources -->
<img id="sizes_x_descriptors" src="" sizes="50vw" srcset="../../hidpi/resources/image-set-1x.png?3 1x, ../../hidpi/resources/image-set-2x.png?3 2x">
<img id="sizes_src" src="../../hidpi/resources/image-set-1x.png?4" sizes="50vw">
<!-- Missing sizes or an invalid one, give a source size of 100vw -->
<img id="default_sizes" src="" srcset="../../hidpi/resources/image-set-1x.png?5 400w, ../../hidpi/resources/image-set-2x.png?5 800w, resources/image-set-4x.png?5 1600w">
<img id="invalid_length" src="" sizes="(max-width: 300px) 400w, 800w" srcset="../../hidpi/resources/image-set-1x.png?6 400w, ../../hidpi/resources/image-set-2x.png?6 800w">
<!-- Make sure that the img src is not picked when 'w' is present -->
<img id="src_and_w" src="../../hidpi/resources/image-set-1x.png?7" sizes="700px" srcset="resources/image-set-4x.png?7 1600w">
<img id="src_and_w2" src="../../hidpi/resources/image-set-2x.png?8" sizes="700px" srcset="../../hidpi/resources/image-set-1x.png?8 400w">
<img id="x_and_w" sizes="700px" srcset="../../hidpi/resources/image-set-1x.png?9 0.4x, resources/image-set-4x.png?9 1600w">
<!-- The 'x' resource should be picked, and 'sizes' have no impact on its intrisic size -->
<img id="x_and_w2" sizes="700px" srcset="../../hidpi/resources/image-set-2x.png?10 2x, resources/image-set-4x.png?10 16000w">
<img id="x_and_w3" sizes="700px" srcset="resources/image-set-4x.png?11 16000w, ../../hidpi/resources/image-set-2x.png?11 2x">
<!-- The intrinsic size should be identical to the 'sizes' value -->
<img id="half_size" sizes="50vw" srcset="../../hidpi/resources/image-set-2x.png?12 800w, resources/image-set-4x.png?12 16000w">
<img id="infitisimal_sizes" sizes="1vw" srcset="../../hidpi/resources/image-set-2x.png?13 800w, resources/image-set-4x.png?13 16000w">
<img id="fraction" sizes="0.5px" srcset="data:,a 1w, data:,b 2x">
<!-- Testing with cached resources. If a higher resolution cached resource is available, it should be picked -->
<img id="seen_lowest_before" sizes="1600px" srcset="../../hidpi/resources/image-set-2x.png?1 800w, resources/image-set-4x.png?1 1600w">
<img id="seen_highest_before" sizes="800px" srcset="../../hidpi/resources/image-set-2x.png?7 800w, resources/image-set-4x.png?7 1600w">
